package com.hibase.core.excel.vo.dynamic;

import lombok.Getter;
import lombok.Setter;

import java.util.Map;

/**
 * Excel动态类配置信息
 *
 * @author <a href="mailto:xiongliyi@hichain.com">Ian Xiong</a>
 * @since 1.4.35-V2
 */
@Getter
@Setter
public class DynamicExcelFieldInfo {
    /**
     * 模板Id
     */
    private String templateId;
    /**
     * 模板版本（重要）
     */
    private Integer version;
    /**
     * 动态类包名
     */
    private String packageName = "com.hibase.core.excel";

    public String getName() {
        return packageName +"$"+templateId + "$javassit$" + version;
    }


    /**
     * 字段
     */
    private Map<String, FieldInfo> fields;


    @Getter
    @Setter
    public static class FieldInfo {
        /**
         * 字段键
         */
        private String key;

        /**
         * 字段名称 {"name1,name2"}
         */
        private String[] headNames;
        /**
         * 字段在Excel模板列中的排序
         */
        private Integer index;

        /**
         * 字段类型
         */
        private String dataType;

        /**
         * 数据格式(预留)
         */
        private String format;
        /**
         * 转换器
         *
         * @see com.hibase.core.excel.converters.Converter
         */
        private String converter;

        /**
         * 不能为空
         */
        private Boolean notNull;
    }

}
